package com.itlong.cloud.enumerate;

import java.util.Objects;

/**
 * <desc>
 *      用户设备权限操作类型枚举
 * </desc>
 *
 * @createDate 2017-10-27
 */
public enum DeviceAuthOperationEnum {
    DEVICEAUTH_OPERATION_OTHER_DEL("其他类别删除", 1),       //迁出住户地址时删除地址对应其他类别权限
    DEVICEAUTH_PROPERTY_ADDR_REFRESH("物业后台刷新", 2),        //物业后台_刷新。住户部分地址变更引发的权限变更，
                                                                    // 包含迁出地址时对应其他类别的权限
    DEVICEAUTH_PROPERTY_ADDR_DEL("物业后台删除", 3),      //物业后台_删除。住户地址全为迁出时清除对应物业、其他类别权限

    ;

    private String description;
    private Integer type;

    /**
     * <desc>
     *      用户设备权限枚举无参构造函数
     * </desc>
     * @param
     * @return
     * @author zhangs
     * @createDate 2017/10/10
     */
    DeviceAuthOperationEnum() {
    }

    /**
     * <desc>
     *      用户设备权限枚举描述与类型构造函数
     * </desc>
     * @param description 描述
     * @param type 类型
     * @return
     * @author zhangs
     * @createDate 2017/10/10
     */
    DeviceAuthOperationEnum(String description, Integer type) {
        this.description = description;
        this.type = type;
    }

    /**
     * <desc>
     *      用户设备权限枚举描述
     * </desc>
     * @param
     * @return String
     * @author zhangs
     * @createDate 2017/10/10
     */
    public String getDescription() {
        return description;
    }

    /**
     * <desc>
     *      用户设备权限枚举类型
     * </desc>
     * @param
     * @return Integer
     * @author zhangs
     * @createDate 2017/10/10
     */
    public Integer getType() {
        return type;
    }

    /**
     * <desc>
     *      获取枚举的描述
     * </desc>
     * @param type 枚举类型
     * @return 枚举描述
     * @author zhangs
     * @createDate 2017/09/22
     */
    public static String getDescription(Integer type){
        DeviceAuthOperationEnum[] types = DeviceAuthOperationEnum.values();
        for(DeviceAuthOperationEnum limitCategory : types ){
            if(Objects.equals(limitCategory.getType(), type)){
                return limitCategory.getDescription();
            }
        }
        return null;
    }
}
